package com.admin_system.service;

import com.admin_system.entity.NoticeRead;
import java.util.List;
import java.util.Map;

/**
 * 公告已读记录服务接口
 */
public interface NoticeReadService {
    
    /**
     * 标记公告为已读
     * 
     * @param noticeId 公告ID
     * @param userId 用户ID
     * @param userName 用户姓名
     * @return 是否成功标记
     */
    boolean markNoticeAsRead(Long noticeId, Long userId, String userName);
    
    /**
     * 获取公告的已读记录
     * 
     * @param noticeId 公告ID
     * @return 已读记录列表
     */
    List<NoticeRead> getNoticeReadRecords(Long noticeId);
    
    /**
     * 检查用户是否已读某公告
     * 
     * @param noticeId 公告ID
     * @param userId 用户ID
     * @return 是否已读
     */
    boolean hasUserReadNotice(Long noticeId, Long userId);
    
    /**
     * 获取用户未读的公告数量
     * 
     * @param userId 用户ID
     * @return 未读公告数量
     */
    int getUnreadNoticeCount(Long userId);
    
    /**
     * 获取公告的未读用户列表（管理员权限）
     * 
     * @param noticeId 公告ID
     * @return 未读用户列表
     */
    List<Map<String, Object>> getNoticeUnreadUsers(Long noticeId);
} 